package Modelo;


import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Random;

public class MPartido {
	private String codigo;
	private MEquipo equipoCasa, equipoVisitante;
	private Calendar fechaPartido;
	private MUmpire principal;
	private int inning, carrerasCasa, carrerasVisitante;
	private HashMap<MJugador,Integer> jugadoresCasaCi, jugadoresVisitanteCi;
	private HashMap<MJugador,Integer> jugadoresCasaHr, jugadoresVisitanteHr;
	private Random aleatorio;
	private boolean seguir = true;
	private boolean extrainning = false;
	
	public MPartido(String codigo, MEquipo equipoCasa,
			MEquipo equipoVisitante, Calendar fechaPartido, MUmpire principal) {
		super();
		this.codigo = codigo;
		//this.carrerasCasa = carrerasCasa;
		//this.carrerasVisitante = carrerasVisitante;
		this.equipoCasa = equipoCasa;
		this.equipoVisitante = equipoVisitante;
		this.fechaPartido = fechaPartido;
		this.principal = principal;
		//this.inning = inning;
		//this.jugadoresCasaCi = jugadoresCasaCi;
		//this.jugadoresVisitanteCi = jugadoresVisitanteCi;
		//this.jugadoresCasaHr = jugadoresCasaHr;
		//this.jugadoresVisitanteHr = jugadoresVisitanteHr;
	}

	
	
	public MPartido() {
		super();
		this.codigo = "";
		this.carrerasCasa = 0;
		this.carrerasVisitante = 0;
		this.equipoCasa = null;
		this.equipoVisitante = null;
		this.fechaPartido = null;
		this.principal = null;
		this.inning = 0;
		this.jugadoresCasaCi = null;
		this.jugadoresVisitanteCi = null;
		this.jugadoresCasaHr = null;
		this.jugadoresVisitanteHr = null;
	}



	public String getCodigo() {
		return codigo;
	}
	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}
	public int getCarrerasCasa() {
		return carrerasCasa;
	}
	public void setCarrerasCasa(int carrerasCasa) {
		this.carrerasCasa = carrerasCasa;
	}
	public int getCarrerasVisitante() {
		return carrerasVisitante;
	}
	public void setCarrerasVisitante(int carrerasVisitante) {
		this.carrerasVisitante = carrerasVisitante;
	}
	public MEquipo getEquipoCasa() {
		return equipoCasa;
	}
	public void setEquipoCasa(MEquipo equipoCasa) {
		this.equipoCasa = equipoCasa;
	}
	public MEquipo getEquipoVisitante() {
		return equipoVisitante;
	}
	public void setEquipoVisitante(MEquipo equipoVisitante) {
		this.equipoVisitante = equipoVisitante;
	}
	public Calendar getFechaPartido() {
		return fechaPartido;
	}
	public void setFechaPartido(Calendar fechaPartido) {
		this.fechaPartido = fechaPartido;
	}
	public MUmpire getPrincipal() {
		return principal;
	}
	public void setPrincipal(MUmpire principal) {
		this.principal = principal;
	}
	public int getInning() {
		return inning;
	}
	public void setInning(int inning) {
		this.inning = inning;
	}
	public HashMap<MJugador, Integer> getJugadoresCasaCi() {
		return jugadoresCasaCi;
	}
	public void setJugadoresCasaCi(HashMap<MJugador, Integer> jugadoresCasaCi) {
		this.jugadoresCasaCi = jugadoresCasaCi;
	}
	public HashMap<MJugador, Integer> getJugadoresVisitanteCi() {
		return jugadoresVisitanteCi;
	}
	public void setJugadoresVisitanteCi(
			HashMap<MJugador, Integer> jugadoresVisitanteCi) {
		this.jugadoresVisitanteCi = jugadoresVisitanteCi;
	}
	public HashMap<MJugador, Integer> getJugadoresCasaHr() {
		return jugadoresCasaHr;
	}
	public void setJugadoresCasaHr(HashMap<MJugador, Integer> jugadoresCasaHr) {
		this.jugadoresCasaHr = jugadoresCasaHr;
	}
	public HashMap<MJugador, Integer> getJugadoresVisitanteHr() {
		return jugadoresVisitanteHr;
	}
	public void setJugadoresVisitanteHr(
			HashMap<MJugador, Integer> jugadoresVisitanteHr) {
		this.jugadoresVisitanteHr = jugadoresVisitanteHr;
	}
	
	public void Simular(){
	 jugadoresCasaCi = new HashMap<MJugador,Integer>();
	 jugadoresVisitanteCi= new HashMap<MJugador,Integer>();
     jugadoresCasaHr = new HashMap<MJugador,Integer>();
     jugadoresVisitanteHr= new HashMap<MJugador,Integer>();
     ArrayList<MJugador> jugadores = new ArrayList<MJugador>();
     int numero ;
	 int hr, ci;
	//boolean empate = false;
	
	carrerasCasa = 0;
	carrerasVisitante=0;
	inning=0;
	aleatorio = new Random();
	
	while (seguir){
	
	
	{ // bloque equipo visitante
		 numero = aleatorio.nextInt(3) ;
		
		if (((carrerasVisitante + numero) <= 15) ){
			carrerasVisitante +=numero;
		}
		else if (((carrerasVisitante + numero) > 15) && (inning<=9)){
			//int diferencia = 15 - carrerasVisitante;
			carrerasVisitante =15;
						
		}
		else if (((carrerasVisitante + numero) > 15) && (inning>=9)){
			carrerasVisitante +=numero;
		}
		
		
	}// fin bloque equipo visitante
	
	
	
	{// bloque equipo casa
			
			int numero2 = aleatorio.nextInt(3);
				
			if (((carrerasCasa + numero2) <= 15)){
				carrerasCasa +=numero2;
			}
			else if (((carrerasCasa + numero2) > 15) && (inning<=9)){
					carrerasCasa =15;
			}
			else if (((carrerasCasa + numero2) > 15) && (inning>=9)){
					carrerasCasa +=numero2;
			}
				
				
	}// fin bloque equipo casa
	
	
	if ((carrerasCasa == carrerasVisitante) && (inning >= 9)){
		inning++;
		
		extrainning = true;
	}
	
	else if ((Math.abs(carrerasCasa - carrerasVisitante)>0) && (inning >= 9) ){
		seguir = false;
		
	}
			
	if (inning < 9){
	inning++;
	}
	
	
	
	}// fin del while
			
	
	for (int i =0; i<carrerasVisitante;i++){// for Equipo Visitante
		aleatorio = new Random();
		int indice = aleatorio.nextInt(equipoVisitante.getJugadores().size());
		
		if(jugadoresVisitanteCi.get(equipoVisitante.getJugadores().get(indice))!=null){
			ci = jugadoresVisitanteCi.get(equipoVisitante.getJugadores().get(indice))+1;
			jugadoresVisitanteCi.put(equipoVisitante.getJugadores().get(indice), ci);
			//equipoVisitante.getJugadores().get(indice).setCi(equipoVisitante.getJugadores().get(indice).getCi()+1);
		}
		else {
			jugadoresVisitanteCi.put(equipoVisitante.getJugadores().get(indice), 1);
			
		} // fin del if else
		equipoVisitante.getJugadores().get(indice).setCi(equipoVisitante.getJugadores().get(indice).getCi()+1);
	}// fin del for Equipo Visitante
	
	
	
	
	for (int i =0; i<carrerasCasa;i++){ // for Equipo Casa
		aleatorio = new Random();
		int indice = aleatorio.nextInt(equipoCasa.getJugadores().size());
		
		if(jugadoresCasaCi.get(equipoCasa.getJugadores().get(indice))!=null){
			ci = jugadoresCasaCi.get(equipoCasa.getJugadores().get(indice))+1;
			jugadoresCasaCi.put(equipoCasa.getJugadores().get(indice), ci);
			//equipoVisitante.getJugadores().get(indice).setCi(equipoVisitante.getJugadores().get(indice).getCi()+1);
		}
		else {
			jugadoresCasaCi.put(equipoCasa.getJugadores().get(indice), 1);
			
		} // fin del if else
		equipoCasa.getJugadores().get(indice).setCi(equipoCasa.getJugadores().get(indice).getCi()+1);
	}// fin del for Equipo Casa
	
	int valor = aleatorio.nextInt(2);
	int valore = aleatorio.nextInt(1);
	
//	switch (valor) {
//	case 0: break;
//	case 1: 
//		if (valore == 0)
			
//		 jugadoresCasaHr.put(arg0, arg1)
	
	}
		
}// fin del metodo
	
